package com.yzy.fly.type;

import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import org.objectweb.asm.Opcodes;

public enum PermissionModifierType {

    PRIVATE("private",Opcodes.ACC_PRIVATE),
    PUBLIC("public",Opcodes.ACC_PUBLIC),
    PROTECTED("protected",Opcodes.ACC_PROTECTED);

    @Setter@Getter
    private String type;
    @Setter@Getter
    private int value;

    PermissionModifierType(String type, int value){
        this.type = type;
        this.value = value;
    }

    public static PermissionModifierType type(String type){
        if (StringUtils.isBlank(type)) {
            return PermissionModifierType.PUBLIC;
        }
        PermissionModifierType permissionModifierType;
        try {
            permissionModifierType = PermissionModifierType.valueOf(type);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            permissionModifierType = PermissionModifierType.PUBLIC;
        }
        return permissionModifierType;
    }

    public static PermissionModifierType value(Integer value){
        if (null == value) {
            return PermissionModifierType.PUBLIC;
        }
        PermissionModifierType permissionModifierType = null;
        try {
            PermissionModifierType[] values = PermissionModifierType.values();
            for (int i = 0; i < values.length; i++) {
                PermissionModifierType modifierType = values[i];
                if (modifierType.value == value) {
                    permissionModifierType = modifierType;
                    break;
                }
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            permissionModifierType = PermissionModifierType.PUBLIC;
        }

        if (permissionModifierType == null) {
            permissionModifierType = PermissionModifierType.PUBLIC;
        }
        return permissionModifierType;
    }

    public static void main(String[] args) {
        PermissionModifierType type = type("year");
        int i =0;
    }
}
